<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Trabbit\V20230418\Models;
use TencentCloud\Common\AbstractModel;

/**
 * RabbitMQ exchange list member information.
 *
 * @method string getExchangeName() Obtain exchange name.
 * @method void setExchangeName(string $ExchangeName) Set exchange name.
 * @method string getRemark() Obtain Remarks.
 * @method void setRemark(string $Remark) Set Remarks.
 * @method string getExchangeType() Obtain Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
 * @method void setExchangeType(string $ExchangeType) Set Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
 * @method string getVirtualHost() Obtain VHost parameter.
 * @method void setVirtualHost(string $VirtualHost) Set VHost parameter.
 * @method string getExchangeCreator() Obtain exchange creator. valid values: `system` (generated by the system), `user` (user-created).
 * @method void setExchangeCreator(string $ExchangeCreator) Set exchange creator. valid values: `system` (generated by the system), `user` (user-created).
 * @method string getCreateTimeStamp() Obtain exchange creation time.
 * @method void setCreateTimeStamp(string $CreateTimeStamp) Set exchange creation time.
 * @method string getModTimeStamp() Obtain exchange modification time.
 * @method void setModTimeStamp(string $ModTimeStamp) Set exchange modification time.
 * @method float getMessageRateIn() Obtain Input message rate.
 * @method void setMessageRateIn(float $MessageRateIn) Set Input message rate.
 * @method float getMessageRateOut() Obtain Output message rate.
 * @method void setMessageRateOut(float $MessageRateOut) Set Output message rate.
 * @method boolean getDurable() Obtain Specifies whether it is a persistent exchange. true indicates persistent, and false indicates non-persistent.
 * @method void setDurable(boolean $Durable) Set Specifies whether it is a persistent exchange. true indicates persistent, and false indicates non-persistent.
 * @method boolean getAutoDelete() Obtain Specifies whether to automatically delete the switch. true indicates automatic deletion, and false indicates non-automatic deletion.
 * @method void setAutoDelete(boolean $AutoDelete) Set Specifies whether to automatically delete the switch. true indicates automatic deletion, and false indicates non-automatic deletion.
 * @method boolean getInternal() Obtain Whether it is an internal switch. valid values: true (indicating an internal switch).
 * @method void setInternal(boolean $Internal) Set Whether it is an internal switch. valid values: true (indicating an internal switch).
 * @method string getInstanceId() Obtain Specifies the ID of the associated instance to which the switch belongs.
 * @method void setInstanceId(string $InstanceId) Set Specifies the ID of the associated instance to which the switch belongs.
 * @method string getPolicy() Obtain The name of the effective policy.
 * @method void setPolicy(string $Policy) Set The name of the effective policy.
 * @method string getArguments() Obtain Additional parameters key-value objects.
 * @method void setArguments(string $Arguments) Set Additional parameters key-value objects.
 * @method integer getMessagesDelayed() Obtain Number of unscheduled delayed messages.
 * @method void setMessagesDelayed(integer $MessagesDelayed) Set Number of unscheduled delayed messages.
 */
class RabbitMQExchangeListInfo extends AbstractModel
{
    /**
     * @var string exchange name.
     */
    public $ExchangeName;

    /**
     * @var string Remarks.
     */
    public $Remark;

    /**
     * @var string Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
     */
    public $ExchangeType;

    /**
     * @var string VHost parameter.
     */
    public $VirtualHost;

    /**
     * @var string exchange creator. valid values: `system` (generated by the system), `user` (user-created).
     */
    public $ExchangeCreator;

    /**
     * @var string exchange creation time.
     */
    public $CreateTimeStamp;

    /**
     * @var string exchange modification time.
     */
    public $ModTimeStamp;

    /**
     * @var float Input message rate.
     */
    public $MessageRateIn;

    /**
     * @var float Output message rate.
     */
    public $MessageRateOut;

    /**
     * @var boolean Specifies whether it is a persistent exchange. true indicates persistent, and false indicates non-persistent.
     */
    public $Durable;

    /**
     * @var boolean Specifies whether to automatically delete the switch. true indicates automatic deletion, and false indicates non-automatic deletion.
     */
    public $AutoDelete;

    /**
     * @var boolean Whether it is an internal switch. valid values: true (indicating an internal switch).
     */
    public $Internal;

    /**
     * @var string Specifies the ID of the associated instance to which the switch belongs.
     */
    public $InstanceId;

    /**
     * @var string The name of the effective policy.
     */
    public $Policy;

    /**
     * @var string Additional parameters key-value objects.
     */
    public $Arguments;

    /**
     * @var integer Number of unscheduled delayed messages.
     */
    public $MessagesDelayed;

    /**
     * @param string $ExchangeName exchange name.
     * @param string $Remark Remarks.
     * @param string $ExchangeType Specifies the exchange type. valid values: "fanout", "direct", "topic", "headers".
     * @param string $VirtualHost VHost parameter.
     * @param string $ExchangeCreator exchange creator. valid values: `system` (generated by the system), `user` (user-created).
     * @param string $CreateTimeStamp exchange creation time.
     * @param string $ModTimeStamp exchange modification time.
     * @param float $MessageRateIn Input message rate.
     * @param float $MessageRateOut Output message rate.
     * @param boolean $Durable Specifies whether it is a persistent exchange. true indicates persistent, and false indicates non-persistent.
     * @param boolean $AutoDelete Specifies whether to automatically delete the switch. true indicates automatic deletion, and false indicates non-automatic deletion.
     * @param boolean $Internal Whether it is an internal switch. valid values: true (indicating an internal switch).
     * @param string $InstanceId Specifies the ID of the associated instance to which the switch belongs.
     * @param string $Policy The name of the effective policy.
     * @param string $Arguments Additional parameters key-value objects.
     * @param integer $MessagesDelayed Number of unscheduled delayed messages.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("ExchangeName",$param) and $param["ExchangeName"] !== null) {
            $this->ExchangeName = $param["ExchangeName"];
        }

        if (array_key_exists("Remark",$param) and $param["Remark"] !== null) {
            $this->Remark = $param["Remark"];
        }

        if (array_key_exists("ExchangeType",$param) and $param["ExchangeType"] !== null) {
            $this->ExchangeType = $param["ExchangeType"];
        }

        if (array_key_exists("VirtualHost",$param) and $param["VirtualHost"] !== null) {
            $this->VirtualHost = $param["VirtualHost"];
        }

        if (array_key_exists("ExchangeCreator",$param) and $param["ExchangeCreator"] !== null) {
            $this->ExchangeCreator = $param["ExchangeCreator"];
        }

        if (array_key_exists("CreateTimeStamp",$param) and $param["CreateTimeStamp"] !== null) {
            $this->CreateTimeStamp = $param["CreateTimeStamp"];
        }

        if (array_key_exists("ModTimeStamp",$param) and $param["ModTimeStamp"] !== null) {
            $this->ModTimeStamp = $param["ModTimeStamp"];
        }

        if (array_key_exists("MessageRateIn",$param) and $param["MessageRateIn"] !== null) {
            $this->MessageRateIn = $param["MessageRateIn"];
        }

        if (array_key_exists("MessageRateOut",$param) and $param["MessageRateOut"] !== null) {
            $this->MessageRateOut = $param["MessageRateOut"];
        }

        if (array_key_exists("Durable",$param) and $param["Durable"] !== null) {
            $this->Durable = $param["Durable"];
        }

        if (array_key_exists("AutoDelete",$param) and $param["AutoDelete"] !== null) {
            $this->AutoDelete = $param["AutoDelete"];
        }

        if (array_key_exists("Internal",$param) and $param["Internal"] !== null) {
            $this->Internal = $param["Internal"];
        }

        if (array_key_exists("InstanceId",$param) and $param["InstanceId"] !== null) {
            $this->InstanceId = $param["InstanceId"];
        }

        if (array_key_exists("Policy",$param) and $param["Policy"] !== null) {
            $this->Policy = $param["Policy"];
        }

        if (array_key_exists("Arguments",$param) and $param["Arguments"] !== null) {
            $this->Arguments = $param["Arguments"];
        }

        if (array_key_exists("MessagesDelayed",$param) and $param["MessagesDelayed"] !== null) {
            $this->MessagesDelayed = $param["MessagesDelayed"];
        }
    }
}
